package com.dkt.android.utils

import android.app.Activity
import android.content.Context
import android.view.View
import android.view.inputmethod.InputMethodManager
import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.facade.Postcard
import com.alibaba.android.arouter.launcher.ARouter
import com.dkt.android.core.RouterHub
import java.util.*



/**
 * @author: jcm
 * @email: jiangcm@aplus-it.cn
 * @createTime: 20-6-3
 */
object Utils {

    fun inject(objects: Any) {
        ARouter.getInstance().inject(objects)
    }

    fun start(path: String): Postcard {
        val p = if (path.isBlank()) {
            RouterHub.OTHER_ERROR_VIEW
        } else {
            path
        }
        return ARouter.getInstance().build(p)
    }


    /**
     * 使用 [ARouter] 根据 `path` 跳转到对应的页面, 这个方法因为没有使用 [Activity]跳转
     * 所以 [ARouter] 会自动给 [android.content.Intent] 加上 Intent.FLAG_ACTIVITY_NEW_TASK
     * 如果不想自动加上这个 Flag 请使用 [ARouter.getInstance] 并传入 [Activity]
     *
     * @param path `path`
     */
    fun navigation(path: String) {
        ARouter.getInstance().build(path).navigation()
    }

    /**
     * 使用 [ARouter] 根据 `path` 跳转到对应的页面, 如果参数 `context` 传入的不是 [Activity]
     * [ARouter] 就会自动给 [android.content.Intent] 加上 Intent.FLAG_ACTIVITY_NEW_TASK
     * 如果不想自动加上这个 Flag 请使用 [Activity] 作为 `context` 传入
     *
     * @param context
     * @param path
     */
    fun navigation(context: Context, path: String) {
        ARouter.getInstance().build(path).navigation(context)
    }

    fun navigationFra(context: Context, path: String?): Fragment? {
        if (path.isNullOrBlank()) {
            navigation(context, RouterHub.OTHER_EMPTY_VIEW)
            return null
        }
        val f: Any? = ARouter.getInstance().build(path).navigation(context)
        return if (f is Fragment) {
            f
        } else {
            navigation(RouterHub.OTHER_ERROR_VIEW)
            null
        }
    }

}